package com.designmodel.singletonmodel;

/**
 * Created by
 * 单例设计模式demo
 * @author touni
 * @date 2019/4/1
 * @time 11:24
 */
public class SingletonDemo {


    //懒汉式   使用的时候才初始化类，需要调用下面的newInstance方法创建对象 需要手动同步
    public static SingletonDemo singleton = null;
    // 饿汉式 一开始就初始化类 线程安全，但是耗费内存，可能运行速度比较快
    public static SingletonDemo getSingleton = new SingletonDemo();



    private SingletonDemo(){}

    /**
     * 可能存在线程安全问题 需要使用synchronize进行线程同步
     * @return
     */
    public static SingletonDemo newInstance(){

        if (null == singleton){
            synchronized (SingletonDemo.class) {
                if (null == singleton) {singleton = new SingletonDemo();}
            }
        }
        return singleton;
    }


    public void printStr(){
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("正在运行中");
    }



}
